home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Applications 1996 May / SGI IRIX 6.2 Applications 1996 May.iso / dist / impr_dev.idb / usr / include / scanner.h.z / scanner.h
C/C++ Source or Header  |  1996-05-06  |  6KB  |  226 lines

  1. #ifndef __SCANNER_H__
  2. #define __SCANNER_H__
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6.  
  7. /*
  8.  * scanner.h
  9.  *
  10.  *    Generic scanner interface application side
  11.  *
  12.  * Copyright 1992, Silicon Graphics, Inc.
  13.  * All Rights Reserved.
  14.  *
  15.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
  16.  * Inc.; the contents of this file may not be disclosed to third
  17.  * parties, copied or duplicated in any form, in whole or in part,
  18.  * without the prior written permission of Silicon Graphics, Inc.
  19.  *
  20.  * RESTRICTED RIGHTS LEGEND:
  21.  * Use, duplication or disclosure by the Government is subject to
  22.  * restrictions as set forth in subdivision (c)(1)(ii) of the Rights
  23.  * in Technical Data and Computer Software clause at DFARS
  24.  * 252.227-7013, and/or in similar or successor clauses in the FAR,
  25.  * DOD or NASA FAR Supplement. Unpublished - rights reserved under the
  26.  * Copyright Laws of the United States.
  27.  */
  28.  
  29. #ident "$Revision: 1.27 $"
  30.  
  31. #define SC_VERSION (1.2)
  32.  
  33. #define SC_INCHES (1L)
  34. #define SC_CENTIM (2L)
  35. #define SC_PIXELS (4L)
  36.  
  37. #define SC_PACKPIX 0
  38. #define SC_PACKBAND 1
  39. #define SC_PACKPLANE 2
  40.  
  41. #define SC_MONO 0
  42. #define SC_GREY 1
  43. #define SC_RGB 2
  44. #define SC_CMY 3
  45. #define SC_CMYK 4
  46.  
  47. #define SC_MAXERRSTR 512
  48.  
  49. /*
  50.  * Error codes
  51.  */
  52. #define SCEBASE 200
  53.  
  54. #define SCENOTSCANNER       SCEBASE
  55. #define SCEWRONGSCANNER     (SCEBASE + 1)
  56. #define SCESCANFD           (SCEBASE + 2)
  57. #define SCECOMM             (SCEBASE + 3)
  58. #define SCENOMEM            (SCEBASE + 4)
  59. #define SCECANTACCESS       (SCEBASE + 5)
  60. #define SCESHORTREAD        (SCEBASE + 6)
  61. #define SCEILLCOMM          (SCEBASE + 7)
  62. #define SCENOTIDENT         (SCEBASE + 8)
  63. #define SCEBADTYPE          (SCEBASE + 9)
  64. #define SCENOTSUPPORTED     (SCEBASE + 10)
  65. #define SCEBADRES           (SCEBASE + 11)
  66. #define SCESCANREAD         (SCEBASE + 12)
  67. #define SCENOTSCANNING      (SCEBASE + 13)
  68. #define SCEDEV              (SCEBASE + 14)
  69. #define SCEBADPARAM         (SCEBASE + 15)
  70. #define SCEBUSY             (SCEBASE + 16)
  71. #define SCENOSCANNER        (SCEBASE + 17)
  72. #define SCEBADMETRIC        (SCEBASE + 18)
  73. #define SCEFEEDEREMPTY      (SCEBASE + 19)
  74. #define SCENOFEEDER         (SCEBASE + 20)
  75. #define SCEAUTOONLY         (SCEBASE + 21)
  76. #define SCEFEEDERJAMMED     (SCEBASE + 22)
  77. #define SCEFEEDERERR        (SCEBASE + 23)
  78. #define SCENOTPROGFEED      (SCEBASE + 24)
  79. #define SCENOSCANNERS       (SCEBASE + 25)
  80. #define SCENODRIVER         (SCEBASE + 26)
  81. #define SCENOOPTIONS        (SCEBASE + 27)
  82. #define SCEALREADYOPTIONS   (SCEBASE + 28)
  83. #define SCEAREATOOSMALL     (SCEBASE + 29)
  84. #define SCEDRVMSG           (SCEBASE + 30)
  85. #define SCENOSAVEOPT        (SCEBASE + 31)
  86. #define SCEBADSAVEOPT        (SCEBASE + 32)
  87. #define SCENOEVENTPENDING   (SCEBASE + 33)
  88. #define SCELAST             SCENOEVENTPENDING
  89.  
  90. #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
  91.  
  92. struct tag_scanner;
  93.  
  94. typedef struct tag_scanner SCANNER;
  95.  
  96. typedef struct tag_scanent {
  97.     char *name;
  98.     char *driver;
  99.     char *device;
  100.     char *options;    
  101. } SCANENT;
  102.  
  103. enum scstate { SC_READY, SC_SCANNING, SC_ERROR };
  104.  
  105. typedef struct tag_scstatus {
  106.     enum scstate state;
  107.     int errno; /* only valid if state == SC_ERROR */
  108.     long curline;
  109.     int pass;
  110. } SCSTATUS;
  111.  
  112. typedef struct tag_scdatatype {
  113.     unsigned int packing : 4;
  114.     unsigned int channels : 4;
  115.     unsigned int type : 8;
  116.     unsigned int bpp : 8;
  117. } SCDATATYPE;
  118.  
  119. typedef struct tag_infoChange {
  120.     unsigned int pageSizeChanged : 1;
  121.     unsigned int resolutionChanged : 1;
  122.     unsigned int dataTypesChanged : 1;
  123.     unsigned int feederFlagsChanged : 1;
  124. } SCINFOCHANGE;
  125.  
  126. #define SCEVENT_INFOCHANGE 1
  127.  
  128. typedef struct tag_scevent {
  129.     unsigned int eventType;
  130.     union {
  131.     SCINFOCHANGE infoChange;
  132.     } event;
  133. } SCEVENT;
  134.  
  135. typedef unsigned int SCFEEDERFLAGS;
  136.  
  137. #define SC_HASFEEDER 1
  138. #define SC_AUTOFEED  2
  139. #define SC_PROGFEED  4
  140.  
  141. void SCPerror(char *ident);
  142. char *SCErrorString(int err);
  143.  
  144. /*
  145.  * Rendezvous
  146.  */
  147. char * SCDefaultScannerName(void);
  148. SCANNER *SCOpen(char *name);
  149. SCANNER *SCOpenScreen(char *screen);
  150. SCANNER *SCOpenFile(char *file);
  151. int SCClose(SCANNER *s);
  152. FILE *SCSetScanEnt(void);
  153. SCANENT *SCGetScanEnt(FILE *fp);
  154. int SCEndScanEnt(FILE *fp);
  155. char *SCScannerName(SCANNER *s);
  156. SCANENT *SCScannerEnt(SCANNER *s);
  157. int SCOptions(SCANNER *s);
  158. int SCHasOptions(SCANNER *s);
  159. int SCGetUserInfo(char *scanner, char **login, char **name, char **hostName);
  160.  
  161. /*
  162.  * Resolution
  163.  */
  164. int SCGetMinMaxRes(SCANNER *s, int metric, float *minx, float *miny,
  165.            float *maxx, float *maxy);
  166. int SCGetScannerRes(SCANNER *s, int metric, float **xres,
  167.             float **yres, int *nres);
  168.  
  169. /*
  170.  * Scanning window
  171.  */
  172. int SCGetPageSize(SCANNER *s, int metric, float *x, float *y,
  173.           float *width, float *height);
  174.  
  175. /*
  176.  * Data types
  177.  */
  178. int SCGetDataTypes(SCANNER *s, SCDATATYPE **dt, int *ntypes);
  179.  
  180. /*
  181.  * Scanning state
  182.  */
  183. int
  184. SCSetup(SCANNER *s, int preview, SCDATATYPE *type,
  185.     int rmetric, float xres, float yres,
  186.     int wmetric, float x, float y, float width, float height);
  187. int SCScan(SCANNER *s);
  188. int SCScanFD(SCANNER *s, int fd);
  189. int SCAbort(SCANNER *s);
  190. int SCGetStatus(SCANNER *s, SCSTATUS *st);
  191. int SCGetStatusFD(SCANNER *s);
  192. int SCGetSaveOptions(SCANNER *s, void **options, int *nBytes);
  193. int SCSetSaveOptions(SCANNER *s, void *options, int nBytes);
  194.  
  195. /*
  196.  * Scan data
  197.  */
  198. int SCGetScanLine(SCANNER *s, void *buf, long bytes);
  199. int SCGetScanSize(SCANNER *s, long *width, long *height, long *bytesPerLine);
  200. int SCGetFD(SCANNER *s);
  201. int SCDataReady(SCANNER *s);
  202.  
  203. /*
  204.  * Events
  205.  */
  206. int SCGetEventFD(SCANNER *s);
  207. int SCEventPending(SCANNER *s);
  208. int SCGetEvent(SCANNER *s, SCEVENT *event);
  209.  
  210. /*
  211.  * Document feeder
  212.  */
  213. int SCFeederGetFlags(SCANNER *s, SCFEEDERFLAGS *flags);
  214. int SCFeederSetFlags(SCANNER *s, SCFEEDERFLAGS flags);
  215. int SCFeederAdvance(SCANNER *s);
  216. int SCFeederReady(SCANNER *s);
  217.  
  218. extern int SCerrno;
  219.  
  220. #endif /* C || C++ */
  221.  
  222. #ifdef __cplusplus
  223. }
  224. #endif
  225. #endif /* !__SCANNER_H__ */
  226.